package com.odontosis.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 
 * @author pablo
 * 
 */
public class BackupMySql {

	public static String gerarBackup(String endereco) {
		SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss");
		final String hora = formato.format(new Date());
		final String arquivoBackup = "backupOrthoSystem";
		int numerodobackup = 1;
		File diretorio = new File(endereco);
		File bck = new File(endereco + arquivoBackup + hora + ".sql");
		// os zeros é para diferenciar um backup do outro

		// Cria diretório
		if (!diretorio.isDirectory()) {
			new File(endereco).mkdir();
		} else {

		}

		// Cria Arquivo de Backup
		try {
			
			//deletar arquivos na pasta
			File dir = new File(endereco);
			java.io.File[] arq = dir.listFiles();

			for (int i = 0; i < arq.length; i++) {
				if (arq[i].isFile()) {
					arq[i].delete();
				}
			} 
			

			if (!bck.isFile()) {
				Runtime.getRuntime().exec(
						"cmd /c mysqldump -uroot -proot odontosis > "
								+ endereco + arquivoBackup + hora + ".sql");
			} else {

				String enderecoArquivo = endereco + arquivoBackup + hora
						+ ".sql";
				while (bck.isFile()) {
					numerodobackup++;
					bck = new File(enderecoArquivo + numerodobackup);
				}

				String executar = "cmd /c mysqldump -uroot -proot odontosis > "
						+ enderecoArquivo;
				//System.out.println(executar);
				Runtime.getRuntime().exec(
						"cmd /c mysqldump -uroot -proot odontosis > "
								+ enderecoArquivo);
			}
		} catch (IOException ex) {
			ex.printStackTrace();
			throw new RuntimeException("Erro gerando backup do mysql");
		}
		return bck.getPath();
	}

	public static boolean deleteDir(File dir) {
		if (dir.isDirectory()) {
			String[] children = dir.list();
			for (int i = 0; i < children.length; i++) {
				boolean success = deleteDir(new File(dir, children[i]));
				if (!success) {
					return false;
				}
			}
		}

		// The directory is now empty so delete it
		return dir.delete();
	}
	
	public static void restore(byte[] bytes) throws Exception {
		File diretorio = new File("c:\\temp");
		if (!diretorio.isDirectory()) {
			diretorio.mkdir();
		}
		RandomAccessFile gravacao = null;
		try {
			final String enderecoRestore = "c:\\temp\\script.sql";
			File f = new File(enderecoRestore);  
			
	        gravacao = new RandomAccessFile(f, "rw");
	        gravacao.write(bytes);
	        Runtime.getRuntime().exec("cmd /c mysql odontosis -uroot -proot < "	+ enderecoRestore);
	        
		} catch (Exception e) {
			throw new RuntimeException("Erro aplicando script do mysql");
		}finally {
			gravacao.close();
		}
        
	}
}
